Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

nice_things/macros/strict_mode.macro.sh

lenient_mode

Since 0.3.0 · Source

Synopsis
#{{{ lenient_mode }}}

Configuration
–

Description
Revert the configuration changes made by the strict_mode macro back to defaults.

Options
–

Operands
–

Stdin
–

Stdout
Two lines of code are printed.

Stderr
–

Exit status

  • 0: Successful completion.
  • 123: Unexpected error (abort).

Abort
Aborts on unexpected error.

Usage examples

#{{{ lenient_mode }}}

strict_mode

Since 0.3.0 · Source

Synopsis
#{{{ strict_mode }}}

Configuration

[package:nice_things]
# Value to be assigned to the IFS variable in strict_mode; accepts printf-style escape sequences
strict_mode_ifs=\037

Description
Change shell options to make behavior more predictable and robust. The line of code printed by this macro does two things, it sets shopts set -Cefu, and it changes the value of IFS to \037 (Unit Separator control code 0x1F). The default value of IFS can be overridden in nice_package.conf.

  • set -C: (noclobber) Prevent existing files from being overwritten by the shell's > redirection operator. Use the explicit overwrite operator >| when overwriting is desired.
  • set -e: (errexit) Exit immediately if any untested command fails.
  • set -f: (noglob) Disable pathname expansion. Use glob to perform globbing.
  • set -u: (nounset) Exit immediately when attempting to expand a variable that is not set.

This configuration can be reverted to defaults using the accompanying lenient_mode macro.

Note

You may have noticed the omission of a pipefail option in strict_mode. That is because pipefail is a bash feature and is not available in other POSIX shells. Still, checking the return status of every stage of a pipeline for errors is very important for program robustness. For that reason the framework offers an equivalent alternative in the PipeStatus class.

Options
–

Operands
–

Stdin
–

Stdout
One line of code is printed.

Stderr
–

Exit status

  • 0: Successful completion.
  • 123: Unexpected error (abort).

Abort
Aborts on unexpected error.

Usage examples

#!/bin/sh
# shellcheck disable=SC2046,SC2086
#{{{ strict_mode }}}